home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Power 1997 December
/
MACPOWER-1997-12.ISO.7z
/
MACPOWER-1997-12.ISO
/
AMUG
/
PROGRAMMING
/
Raven 1.2.sit
/
Raven 1.2
/
Source
/
Foundation
/
Common
/
ZLockable.h
< prev
next >
Wrap
Text File
|
1997-05-18
|
2KB
|
87 lines
/*
* File: ZLockable.h
* Summary: Mixin lockable objects.
* Written by: Jesse Jones
*
* Copyright ゥ 1996 Jesse Jones.
* For conditions of distribution and use, see copyright notice in ZTypes.h
*
* Change History (most recent first):
*
* <-> 1/14/96 JDJ Created.
*/
#pragma once
#include <ZConstants.h>
// ===================================================================================
// class MBaseLockable
// Abstract base class for things that can be locked (eg handles and gworlds).
// ===================================================================================
class MBaseLockable {
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~MBaseLockable();
MBaseLockable();
//-----------------------------------
// API
//
public:
virtual void Lock(bool moveHigh = kDontMoveHigh) = 0;
// Note that moveHigh is just a hint. kMoveHigh should be
// used when the object is going to be locked for a long time.
virtual void Unlock() = 0;
virtual bool IsLocked() const = 0;
};
// ===================================================================================
// class MLockable
// A lockable mixin that maintains a lock count.
// ===================================================================================
class MLockable : public MBaseLockable {
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~MLockable();
MLockable();
//-----------------------------------
// Inherited API
//
public:
virtual void Lock(bool moveHigh = kDontMoveHigh);
virtual void Unlock();
virtual bool IsLocked() const;
//-----------------------------------
// New API
//
protected:
virtual void OnLock(bool moveHigh) = 0;
virtual void OnUnlock() = 0;
//-----------------------------------
// Member data
//
protected:
long mLockCount;
};